package com.ctshk.rpc.tour.dto.schedule;

import com.ctshk.common.utils.dpcf.annotation.DpcfOptionEnumTran;
import com.ctshk.rpc.tour.req.CollectionPlaceJson;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.List;

/**
 * @author Lenovo
 */
@Data
@ApiModel(value = "TripScheduleDTO对象", description = "团期管理列表对象")
public class TripScheduleDTO implements Serializable {

    @ApiModelProperty(value = "id")
    private Long id;

    @DpcfOptionEnumTran("1, 未成团, 2, 已成团, 3, 停售, 4, 保留, 5, 不成团, 5, 已完团")
    @ApiModelProperty(value = "团期状态(1:未成团 2：已成团 3：停售 4：保留 5：不成团 6：已完团)")
    private Integer scheduleStatus;

    @ApiModelProperty(value = "标题")
    private String title;

    @ApiModelProperty(value = "行程码")
    private String tripCode;

    @ApiModelProperty(value = "所属行程")
    private Long tripId;

    @ApiModelProperty(value = "出发日期")
    private LocalDate departureDate;

    @ApiModelProperty(value = "回城日期")
    private LocalDate backDate;

    @ApiModelProperty(value = "出行天数")
    private Integer travelDays;

    @ApiModelProperty(value = "含几晚")
    private Integer nightDays;

    @ApiModelProperty(value = "最大成团人数")
    private Integer maxPeople;

    @ApiModelProperty(value = "最小成团人数")
    private Integer minPeople;

    @ApiModelProperty(value = "留位数")
    private Integer reservedSeatsNum;

    @ApiModelProperty(value = "团号")
    private String tripNumber;

    @ApiModelProperty(value = "目的地主数据ID")
    private Long destinationId;

    @ApiModelProperty(value = "目的地")
    private String destination;

    @ApiModelProperty(value = "出发地主数据ID")
    private Long departurePlaceId;

    @ApiModelProperty(value = "出发地")
    private String departurePlace;

    @ApiModelProperty(value = "集合地点String")
    private String collectionPlaceJsons;

    @ApiModelProperty(value = "解散地区String")
    private String dissolutionAreaJsons;

    @ApiModelProperty(value = "集合地点JSON")
    private List<CollectionPlaceJson> collectionPlaceJson;

    @ApiModelProperty(value = "解散地区JSON")
    private List<CollectionPlaceJson> dissolutionAreaJson;

    @ApiModelProperty(value = "去程咨询航班")
    private String departureConsulation;

    @ApiModelProperty(value = "去程出发时间类型")
    private Integer departureTimeType;

    @ApiModelProperty(value = "去程时间")
    private LocalTime departureTime;

    @ApiModelProperty(value = "去程到达时间类型")
    private Integer goArriveDateType;

    @ApiModelProperty(value = "去程到达时间")
    private LocalTime goArriveTime;

    @ApiModelProperty(value = "去程交通类型主数据ID")
    private Long departureTrafficTypeId;

    @ApiModelProperty(value = "去程交通类型")
    private String departureTrafficType;

    @ApiModelProperty(value = "返程咨询")
    private String returnConsulation;

    @ApiModelProperty(value = "返程时间")
    private LocalTime returnTime;

    @ApiModelProperty(value = "返程达到时间类型")
    private Integer returnArriveDateType;

    @ApiModelProperty(value = "返程到达时间")
    private LocalTime returnArriveTime;

    @ApiModelProperty(value = "返程交通类型主数据ID")
    private Long returnTrafficTypeId;

    @ApiModelProperty(value = "返程交通类型")
    private String returnTrafficType;

    @ApiModelProperty(value = "是否茶会")
    private Integer hasTeaParty;

    @ApiModelProperty(value = "茶会地点id")
    private Integer teaPartyLocId;

    @ApiModelProperty(value = "茶会日期")
    private LocalDate teaPartyDate;

    @ApiModelProperty(value = "茶会时间")
    private LocalTime teaPartyTime;

    @ApiModelProperty(value = "茶会备注")
    private String teaPartyRemark;

    @ApiModelProperty(value = "是否允许追位")
    private Integer enableAdditionalPosition;

    @ApiModelProperty(value = "清位时间")
    private Integer clearSeatsTime;

    @ApiModelProperty(value = "清位时间单位")
    private Integer clearSeatsUnit;

    @ApiModelProperty(value = "成本分摊模板类型")
    private Integer costSharingType;

    @ApiModelProperty(value = "负责人ID")
    private Long chargePersonId;

    @ApiModelProperty(value = "负责人员工号")
    private String chargePersonNumber;

    @ApiModelProperty(value = "负责人姓名")
    private String chargePersonName;

    @ApiModelProperty(value = "负责人部门")
    private String chargePersonDepartment;

    @ApiModelProperty(value = "OP的ID")
    private Long opId;

    @ApiModelProperty(value = "OP的员工号")
    private String opNumber;

    @ApiModelProperty(value = "OP姓名")
    private String opName;

    @ApiModelProperty(value = "op部门")
    private String opDepartment;

    @ApiModelProperty(value = "团费直客价")
    private BigDecimal groupCustomerPrice;

    @ApiModelProperty(value = "直客毛利率")
    private Double customerGrossProfitRate;

    @ApiModelProperty(value = "团费代理价")
    private BigDecimal groupAgencyPrice;

    @ApiModelProperty(value = "代理毛利率")
    private Double agencyGrossProfitRate;

    @ApiModelProperty(value = "周几")
    private DayOfWeek departureDayOfWeek;

    @ApiModelProperty(value = "出发日期")
    private DayOfWeek backDayOfWeek;

    @ApiModelProperty(value = "团规则key(A团 B团)")
    private String sortKey;

    @ApiModelProperty(value = "已收客人数")
    private Integer lockedTouristNum;

    @ApiModelProperty(value = "门市摘要")
    private String shopSummary;

    @ApiModelProperty(value = "团期状态标识(1:急收团 2：已成团 3：其余未成团)")
    private Integer scheduleStatusFlag;

    @ApiModelProperty(value = "自营权限类型")
    private Integer selfSalePermissionType;

    @ApiModelProperty(value = "代理商权限类型")
    private Integer agentSalePermissionType;
}
